<?php
/**
 * 系统测试脚本
 * 用于验证智能网站生成器的核心功能是否正常运行
 */

// 设置错误报告
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// 定义常量
define('ROOT_PATH', dirname(__FILE__) . '/');
define('APP_PATH', ROOT_PATH . 'app/');
define('CONFIG_PATH', ROOT_PATH . 'config/');

// 加载辅助函数
if (file_exists(ROOT_PATH . 'helper.php')) {
    require_once ROOT_PATH . 'helper.php';
}

// 加载应用公共文件
if (file_exists(APP_PATH . 'common.php')) {
    require_once APP_PATH . 'common.php';
}

// 测试配置加载
function testConfig() {
    echo "\n===== 测试配置加载 =====\n";
    if (file_exists(CONFIG_PATH . 'app.php')) {
        $config = include CONFIG_PATH . 'app.php';
        echo "配置文件加载成功\n";
        echo "应用名称: " . $config['app_name'] . "\n";
        echo "应用版本: " . $config['app_version'] . "\n";
        return true;
    } else {
        echo "配置文件不存在\n";
        return false;
    }
}

// 测试组件渲染器
function testComponentRenderer() {
    echo "\n===== 测试组件渲染器 =====\n";
    if (file_exists(APP_PATH . 'service/ComponentRenderer.php')) {
        require_once APP_PATH . 'service/ComponentRenderer.php';
        
        // 测试导航栏组件渲染
        $navbarData = [
            'type' => 'navbar',
            'name' => '测试导航栏',
            'styles' => [
                'background' => 'white',
                'shadow' => 'sm'
            ],
            'content' => [
                'logo' => [
                    'text' => '测试',
                    'href' => '#'
                ],
                'navItems' => [
                    ['name' => '首页', 'href' => '#'],
                    ['name' => '关于', 'href' => '#about']
                ]
            ]
        ];
        
        try {
            // 使用helper函数调用组件渲染器
            $html = helper('render_component', ['navbar', $navbarData]);
            if ($html) {
                echo "组件渲染成功!\n";
                echo "渲染结果示例: " . substr($html, 0, 100) . "...\n";
                return true;
            } else {
                echo "组件渲染失败\n";
                return false;
            }
        } catch (Exception $e) {
            echo "组件渲染出错: " . $e->getMessage() . "\n";
            return false;
        }
    } else {
        echo "组件渲染器文件不存在\n";
        return false;
    }
}

// 测试AI生成功能
function testAIGeneration() {
    echo "\n===== 测试AI生成功能 =====\n";
    
    try {
        // 调用模拟的AI生成功能
        $aiData = helper('ai_generate_component_data', ['hero']);
        
        if (is_array($aiData) && !empty($aiData)) {
            echo "AI生成组件数据成功!\n";
            echo "生成的组件类型: " . $aiData['type'] . "\n";
            echo "生成的组件名称: " . $aiData['name'] . "\n";
            return true;
        } else {
            echo "AI生成组件数据失败\n";
            return false;
        }
    } catch (Exception $e) {
        echo "AI生成功能出错: " . $e->getMessage() . "\n";
        return false;
    }
}

// 测试文件系统操作
function testFileSystem() {
    echo "\n===== 测试文件系统操作 =====\n";
    
    // 测试目录创建
    $testDir = ROOT_PATH . 'runtime/test/';
    if (!is_dir($testDir)) {
        if (mkdir($testDir, 0777, true)) {
            echo "测试目录创建成功: " . $testDir . "\n";
        } else {
            echo "测试目录创建失败: " . $testDir . "\n";
            return false;
        }
    }
    
    // 测试文件创建
    $testFile = $testDir . 'test.txt';
    if (file_put_contents($testFile, '这是测试内容')) {
        echo "测试文件创建成功: " . $testFile . "\n";
        
        // 测试文件读取
        $content = file_get_contents($testFile);
        if ($content) {
            echo "测试文件读取成功，内容: " . $content . "\n";
            return true;
        } else {
            echo "测试文件读取失败\n";
            return false;
        }
    } else {
        echo "测试文件创建失败\n";
        return false;
    }
}

// 运行所有测试
function runAllTests() {
    $results = [];
    
    $results['config'] = testConfig();
    $results['renderer'] = testComponentRenderer();
    $results['ai'] = testAIGeneration();
    $results['filesystem'] = testFileSystem();
    
    // 统计结果
    $successCount = count(array_filter($results));
    $totalCount = count($results);
    
    echo "\n===== 测试结果汇总 =====\n";
    echo "总测试数: $totalCount\n";
    echo "成功测试数: $successCount\n";
    echo "失败测试数: " . ($totalCount - $successCount) . "\n";
    
    if ($successCount === $totalCount) {
        echo "\n恭喜! 所有测试都通过了!\n";
        echo "智能网站生成器系统运行正常，可以使用了。\n";
        echo "\n使用说明:\n";
        echo "1. 访问 http://localhost:8000/ 开始使用网站生成器\n";
        echo "2. 选择您需要的组件并点击'生成网站'\n";
        echo "3. 使用AI生成功能可以自动生成组件内容\n";
    } else {
        echo "\n很遗憾，有一些测试没有通过。请检查失败的测试项并修复问题。\n";
    }
}

// 执行测试
runAllTests();

echo "\n测试完成。\n";